home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 52
/
Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso
/
Aminet
/
misc
/
emu
/
Apex-src.lha
/
XPL.BUG
< prev
next >
Wrap
Text File
|
2001-09-30
|
3KB
|
92 lines
XPL.BUG JUL-01-88
MISCELLANEA
The non-floating-point version of the compiler will blow up if it
encounters a decimal point or anything else that looks like a floating
point constant. This can happen if a comment is not bracked correctly.
When a compile error occurs, a lowercase "n" is ignored.
"reg int X" and "int X" can both be in the same scope.
If there are no local variables, then the frame pointer does not need to
be set up, or saved and restored. (It is difficult to handle 'RETURN'
statements).
The 'EXIT' statement doesn't restore registers; it simply takes the Apex
exit vector, similar to the ABORT intrinsic (note the asymmetry between
these two methods).
It takes 13.1 seconds to compile the compiler (~23444 bytes) on the Amiga.
It takes 6.5 seconds to load it. Peter can do it in 18 seconds using a
3.5MHz 65802!
The compiler should show the line count when it finds an error.
Warning! there is no check for overflowing the stack and heap except when
doing a RESERVE.
INT
BITMAP and BITMAP2 parameters should be initialized. (Use OPENO(0).)
Add the rest of the intrinsics. TESTPT, BUTTON, MOUSE, SOUND.
FLOATING POINT
The Amiga needs floating point.
The Stride FPU is never initialized (FPINIT).
WARNING: The trick used to set a real array to an absolute address has changed.
\Before: \Now:
real X; real X;
int A; begin
begin X:= FLOAT($6000);
A:= addr X; . . .
A(0):= $6000;
. . .
Many floating point errors are not trapped. Such as div by 0.0, FIX overflow,
and SQRT of a negative number.
FIX rounds 0.5 down rather than up. E.g: FIX(12.5) = 12
Multidimensional, constant, real arrays don't work. The loader must FIX
locations using floating point values.
When the floating point registers overflow they are not saved on the stack.
The RATOM routine in the compiler should use the same algorithm that is used by
RLIN.
Floating point constants (define) don't work because the compiler was
compiled without real array capability.
Passing real arguments just barely works and is very inefficient.
The compiler generates code for real compares that won't work with the real
68881.
Clean up op names. STD == STT, DBX/DBI == TRX/TRI, DBA == TRA. Note that
DBI and TRI are not used anymore.
Register variables for real numbers.
TRANSCENDENTALS
ATAN(0.0,1.0) GIVES 1.XXXE-16, a relative error of some significance.
SQ kills FPP.
EXP function are not implemented.
LN(1) is not sufficiently accurate.
t